MVVM প্যাটার্নে Command একটি গুরুত্বপূর্ণ উপাদান, যা View থেকে ViewModel-এ ইউজারের অ্যাকশন (যেমন বাটন ক্লিক) প্রেরণ করে। ICommand ইন্টারফেস Command প্যাটার্নের একটি মূল অংশ, যা ViewModel-এ কমান্ডের জন্য একটি স্ট্যান্ডার্ড ইন্টারফেস প্রদান করে।
ICommand ইন্টারফেসের মাধ্যমে, আপনি কমান্ডের কাজ, কার্যকারিতা এবং শর্তাবলী নির্ধারণ করতে পারেন। এখানে ICommand ইন্টারফেস এবং Custom Command তৈরি করার বিস্তারিত প্রক্রিয়া দেয়া হল।
ICommand ইন্টারফেস একটি স্ট্যান্ডার্ড ইন্টারফেস যা কমান্ডের কার্যকারিতা পরিচালনা করতে ব্যবহৃত হয়। এটি সাধারণত দুইটি মেথড এবং একটি প্রপার্টি ধারণ করে:
true
অথবা false
)।public interface ICommand
{
void Execute(object parameter);
bool CanExecute(object parameter);
event EventHandler CanExecuteChanged;
}
Custom Command তৈরি করার জন্য আপনাকে ICommand ইন্টারফেস বাস্তবায়ন (implement) করতে হবে এবং এতে থাকা মেথডগুলির কার্যকারিতা প্রদান করতে হবে। সাধারণত, এটি একটি ক্লাস হিসেবে তৈরি করা হয় যা একটি নির্দিষ্ট কাজ (যেমন বাটনে ক্লিক) সম্পাদন করে।
ধরা যাক, আমাদের একটি SubmitCommand
তৈরি করতে হবে, যা একটি বাটনে ক্লিক করলে একটি নির্দিষ্ট কাজ করবে (যেমন ফর্ম সাবমিট করা)।
using System;
using System.Windows.Input;
public class SubmitCommand : ICommand
{
private readonly Action _execute;
private readonly Func<bool> _canExecute;
// কনস্ট্রাক্টর যা Execute এবং CanExecute এর জন্য ফাংশন নেবে
public SubmitCommand(Action execute, Func<bool> canExecute = null)
{
_execute = execute ?? throw new ArgumentNullException(nameof(execute));
_canExecute = canExecute;
}
// Execute মেথড যা কমান্ডটি কার্যকর করবে
public void Execute(object parameter)
{
_execute.Invoke();
}
// CanExecute মেথড যা নির্ধারণ করবে কমান্ডটি চালানো যাবে কিনা
public bool CanExecute(object parameter)
{
return _canExecute == null || _canExecute();
}
// CanExecuteChanged ইভেন্ট যা যখন কমান্ডের অ্যাবিলিটি পরিবর্তিত হবে তখন ট্রিগার করবে
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
}
এখন, ViewModel-এ SubmitCommand ব্যবহার করা যাবে। আমরা SubmitCommand কে একটি প্রপার্টি হিসেবে তৈরি করব এবং View-এ Data Binding এর মাধ্যমে এটি ব্যবহার করব।
public class MyViewModel
{
public ICommand SubmitCommand { get; set; }
public MyViewModel()
{
// Command তৈরি করা, যেখানে Execute এবং CanExecute ফাংশন পাস করা হচ্ছে
SubmitCommand = new SubmitCommand(OnSubmit, CanSubmit);
}
// Execute মেথডের জন্য কাজ
private void OnSubmit()
{
// ফর্ম সাবমিট করার জন্য কাজ
Console.WriteLine("Form Submitted");
}
// CanExecute মেথডের জন্য শর্ত
private bool CanSubmit()
{
// সাবমিট শর্ত (যেমন, ফর্ম ফিল্ডগুলো পূর্ণ হলে সাবমিট করা যাবে)
return true; // যেকোনো শর্ত এখানে নির্ধারণ করতে পারেন
}
}
এখন, XAML বা UI-এ SubmitCommand-কে বাইন্ড করা হবে।
<Button Content="Submit" Command="{Binding SubmitCommand}" />
এখানে Button-এর Command প্রপার্টি ViewModel-এর SubmitCommand
-এর সাথে বাইন্ড করা হয়েছে। অর্থাৎ, বাটন ক্লিক করলে OnSubmit() মেথডটি ট্রিগার হবে এবং কাজটি সম্পাদিত হবে।
এভাবে, ICommand ইন্টারফেস এবং Custom Command তৈরি করে, আপনি MVVM প্যাটার্নে কমান্ডের কার্যকারিতা নিশ্চিত করতে পারেন।
common.read_more